//在字符串 s 中找出第一个只出现一次的字符。如果没有，返回一个单空格。 s 只包含小写字母。 
//
// 示例 1: 
//
// 
//输入：s = "abaccdeff"
//输出：'b'
// 
//
// 示例 2: 
//
// 
//输入：s = "" 
//输出：' '
// 
//
// 
//
// 限制： 
//
// 0 <= s 的长度 <= 50000 
//
// Related Topics 队列 哈希表 字符串 计数 👍 272 👎 0


//leetcode submit region begin(Prohibit modification and deletion)

/**
 * 哈希表
 * 往map中 put s 元素，没有value为TRUE，有则改为false
 * 按照字符串顺序判断获取
 */
/*class Solution {
    public char firstUniqChar(String s) {
        Map<Character,Boolean> map = new HashMap<>();
        char[] chars = s.toCharArray();

        for (char c : chars){
            map.put(c,!map.containsKey(c));
        }
        for (char c : chars){
            if (map.get(c)) return c;
        }
        return ' ';
    }
}*/
//有序哈希表
class Solution {
    public char firstUniqChar(String s) {

        Map<Character, Boolean> dic = new LinkedHashMap<>();

        char[] sc = s.toCharArray();

        for(char c : sc)
            dic.put(c, !dic.containsKey(c));

        for(Map.Entry<Character, Boolean> d : dic.entrySet()){
            if(d.getValue()) return d.getKey();
        }
        return ' ';
    }
}
//leetcode submit region end(Prohibit modification and deletion)
